package com.eregg.learn.netty.demo;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;

import java.nio.charset.Charset;
import java.util.Date;

/**
 * 客户端与服务器端建立连接后，调用channelActive方法。
 */
public class FirstClientHandler extends ChannelInboundHandlerAdapter {

    //写数据到服务器端
    @Override
    public void channelActive(ChannelHandlerContext ctx) throws Exception {

        //1. 获取二进制抽象 ByteBuf
        ByteBuf buffer = ctx.alloc().buffer();
        //2. 将消息写入buf
        buffer.writeBytes(String.format("[%s] Hello World ", new Date()).getBytes(Charset.forName("utf-8")));
        //3. 将buf写入通道
        ctx.writeAndFlush(buffer);

        System.out.println(String.format("[%s]客户端写出数据", new Date()));
    }

    /**
     * 从服务器端读取数据
     * @param ctx
     * @param msg
     * @throws Exception
     */
    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {

        ByteBuf byteBuf = (ByteBuf) msg;
        System.out.println(String.format("[%s]服务器响应数据 -> %s", new Date(), byteBuf.toString(Charset.forName("utf-8"))));

    }
}
